package base.jdk8_demo.lambda.interfaces;

/**
 * Car实现了Vehicle、FourWheeler接口，该二接口都有一个同名print()默认方法，Car有两种方式对此二接口进行处理。
 * 1、重写print()方法，实现自己的默认处理逻辑
 * 2、重写print()方法，内部调用任一接口中提供的默认print()方法，作为自己的默认实现。
 * 此两种重写方式，方法的权限修饰符要是public，default不是权限修饰符，而且接口方法默认就是public。
 */
public class Car implements Vehicle, FourWheeler{
    //1、重写默认方法的实现
//    @Override
//    public void print() {
//        System.out.println("我是一辆四轮汽车!");
//    }
    //2、指定调用某个接口的默认实现
    @Override
    public void print(){
        //super.print()不知道是调用那个接口的print()方法，因此采用FourWheeler.super.print()方式指定
        FourWheeler.super.print();//我是一辆4轮车
        System.out.println(Car.super.toString());//base.jdk8_demo.lambda.interfaces.Car@33833882
        // FourWheeler.super == this
        System.out.println(FourWheeler.super.toString());//base.jdk8_demo.lambda.interfaces.Car@33833882
        System.out.println(Vehicle.super.toString());//base.jdk8_demo.lambda.interfaces.Car@33833882
    }
}
